// jwt运行过程
// 1.用户向服务器发送用户名和密码
// 2.服务器验证用户名和密码，如果正确，就生成一个JSON对象，包含用户信息以及过期时间
// 3.服务器把这个JSON对象加密，生成JWT
// 4.服务器把JWT发送给用户
// 5.用户以后每次请求，都要带上这个JWT
// 6.服务器验证这个JWT，如果验证通过，就向用户返回数据

// JWT的三个部分
// 1.头部（header）
// 2.载荷（payload）
// 3.签名（signature）

// header
// {
//   "alg": "HS256",
//   "typ": "JWT"
// }

// payload
// {
//   "sub": "1234567890",
//   "name": "John Doe",
//   "iat": 1516239022
// }

// signature
// HMACSHA256(
//   base64UrlEncode(header) + "." +
//   base64UrlEncode(payload),
//   your-256-bit-secret
// )

// JWT的三个部分通过.连接起来，构成了最终的JWT

// JWT使用方式
// 1.客户端收到服务器返回的JWT，可以储存在Cookie里面，也可以储存在localStorage
// 2.此后，客户端每次与服务器通信，都要带上这个JWT
// 3.如果把这个Cookie禁用，可以把JWT放在HTTP请求的头信息Authorization字段里面
// 4.Authorization: Bearer <token>
// 5.放在HTTP请求的头信息Authorization字段里面，必须放在双引号里面
// 6.服务器收到后，对JWT进行验证，如果验证通过，就向客户端返回数据
// 7.如果验证不通过，就向客户端返回401错误，表示用户没有权限
// 8.客户端收到401错误，就跳转到登录页面

// express中使用JWT
// 1.安装jsonwebtoken模块 生成 json字符串
// 2.安装express-jwt模块 解析 json字符串
// 3.在app.js中引入jsonwebtoken和express-jwt模块
